<?php
header('Content-type:text/html;charset=utf8');
//配置项设置的流程：
//1、建立用来判断配置项的函数
//2、新建一个静态变量 用来存放到内存中 方便随时取值调用
//2、加载配置项  判断加载进去的配置项是否有值
//3、如果没有值就返回结果 
//4、如果有值在判断 加载的配置项 是否是数组
//5、如果是数组 就把加载进去的值 和当前内存中的值 合并
//6、再次判断传进来是不是字符串 
//     如果是字符串 分两种情况  
//     		a、传进来的字符串里面的值 是否为空  如果为空 就取值 
//   		b、如果不为空  就把值赋值给当前的内存中保存
//   			
/**
 * 配置项操作
 * @param  [type] $name  [description]
 * @param  [type] $value [description]
 * @return [type]        [description]
 */
//首先定义函数的$name和value都为空 当什么都没传的时候 给它们参考判断
function func($name=null,$value=null){
	//定义一个空的静态变量  用来存放处理好的配置项让它存放到内存中 方便读取
	static $config=array();
	//判断 传进来的$name 是否有值
	if(is_null($name)){
		// 如果没有值就返回所有值
		return $config;
		// 如果有值的话就在进行判断 看看是不是数组
	}else if(is_array($name)){
		// 如果是数组就合并到内存中  存放合并 加载后的值 存放到内存中
		$config = array_merge($config,$name);
		// 判断加载进来的数组中是否是字符串
	}else if(is_string($name)){
		// 分两组情况判断 判断里面的键值是否存在
		// 如果键值不存在 就取值 如果存在就赋值
		if(is_null($value)){
			// 然后就取值了 
			return isset($config[$name])?$config[$name]:null;
		}else{
			// 赋值
			return $config[$name] = $value;
		}
	}
}

//1、加载配置项 把现有的配置项加载进函数里面
$fonfig= require 'cofig.php';
func($fonfig);
var_dump(func());

//2、取值  读取配置项 有值的情况就输出原来的值
// var_dump(func('db_name'));

//3、赋值 如果在传值进去 
// func('db_name','houdun');
// var_dump(func());

//4、不改变原来的值   新增值到内存中
// func('host','192.168.199.1');
// var_dump(func());

?>